Wczytanie bibliotek

library(dplyr, warn.conflicts = FALSE)
library(tidyr, warn.conflicts = FALSE)
library(ggplot2, warn.conflicts = FALSE)
library(readxl, warn.conflicts = FALSE)
library(plotly, warn.conflicts = FALSE)

Zapewnienie powtarzalności

set.seed(997)

Wczytanie danych

bitcoin_diff <- 
  read.csv("data/Bitcoin/BCHAIN-DIFF.csv", 
           header=TRUE)

bitcoin_hrate <- 
  read.csv("data/Bitcoin/BCHAIN-HRATE.csv", 
           header=TRUE)

bitcoin_mkpru <- 
  read.csv("data/Bitcoin/BCHAIN-MKPRU.csv", 
           header=TRUE)

bitcoin_trvou <- 
  read.csv("data/Bitcoin/BCHAIN-TRVOU.csv", 
           header=TRUE)

currency_exchange_rates <- 
  read.csv("data/CurrencyExchangeRates.csv", 
           header=TRUE)

gold_prices <- 
  read.csv("data/Gold_prices.csv", 
           header=TRUE, 
           col.names = c("date", "USD_AM", "USD_PM", "GBP_AM",  "GBP_PM",  "EURO_AM", "EURO_PM"))

s_p_composite <- 
  read.csv("data/S&PComposite.csv", 
           header=TRUE)

world_development_indicators <- 
  read_excel("data/World_Development_Indicators.xlsx", 
             sheet="Data", 
             na=c(".."))

Czyszczenie danych

W przypadku wszystkich zbiorów danychkolumna zawierająca czas została nazwana “date”, a jej klasa została zmieniona na POSIXct. Zbiory s_p_composite i world_development_indicators zawierają wartości wskaźników dla danych miesięcy lub lat. Dla uproszczenia łączenia z innymi zbiorami w dalszej części kolumna z datą zawiera odpowiednio pierwszy dzień danego miesiąca lub roku. Część zbiorów wymagała tranformacji, tak aby każda zmienna w nich przedstawiona była w osobnej kolumni a obserwacja w osobnym wierszu. Ze zbioru currency_exchange_rates zostały wybrane cztery waluty (wybór został wyjaśniony w części zawierającą analizę zbioru). Nazwy walut zostały zmienione na język polski. W przypadku Dolara australijskiego potrzebna była transformacja, aby wartości reprezentowały kusrs Dolara amerykańskiego do Dolara australijskiego, a nie jak ma to miejsce w orginalnym zbiorze Dolara australijskiego do Dolara amerykańskiego. W zbiorze gold_prices wartości dla danej waluty z dwóch kolumn jej dotyczących zostały połączone w jedą kolumnę zawierającą wartość średnią lub w przypadku gdy wartości z jedenj kolumny brakuje - wartością z drugiej kolumny. W przypadku wszystkich zbiorów wiersze zawierające wartości NA zostały usunięte.

bitcoin_diff <- 
  bitcoin_diff %>% 
  mutate(Date=as.POSIXct(strptime(Date, "%Y-%m-%d"))) %>%
  rename(date=Date, value=Value)

bitcoin_hrate <- 
  bitcoin_hrate %>% 
  mutate(Date=as.POSIXct(strptime(Date, "%Y-%m-%d"))) %>%
  rename(date=Date, value=Value)

bitcoin_mkpru <- 
  bitcoin_mkpru %>% 
  mutate(Date=as.POSIXct(strptime(Date, "%Y-%m-%d"))) %>%
  rename(date=Date, value=Value)

bitcoin_trvou <- 
  bitcoin_trvou %>% 
  mutate(Date=as.POSIXct(strptime(Date, "%Y-%m-%d"))) %>%
  rename(date=Date, value=Value)

currency_exchange_rates <-
  currency_exchange_rates %>%
  select(Date, Chinese.Yuan, Australian.Dollar, Russian.Ruble, Canadian.Dollar) %>%
  rename(date=Date, 
         Yuan=Chinese.Yuan, 
         `Dolar australijski`=Australian.Dollar, 
         Rubel=Russian.Ruble, 
         `Dolar kanadyjski`=Canadian.Dollar) %>%
  mutate(`Dolar australijski`=1/`Dolar australijski`) %>%
  gather(waluta, value, Yuan:`Dolar kanadyjski`) %>%
  mutate(waluta=as.factor(waluta), date=as.POSIXct(strptime(date, "%Y-%m-%d")))  %>%
  filter(!is.na(value))

gold_prices <- 
  mutate(gold_prices,
         USD=merge_prices(USD_AM,  USD_PM), 
         GBP=merge_prices(GBP_AM, GBP_PM), 
         EURO=merge_prices(EURO_AM, EURO_PM)) %>% 
  select(date, USD, GBP, EURO) %>%
  gather(waluta, value, USD:EURO) %>%
  mutate(waluta=as.factor(waluta), date=as.POSIXct(strptime(date, "%Y-%m-%d")))  %>%
  filter(!is.na(value))

s_p_composite <- 
  gather(s_p_composite, indicator, value, S.P.Composite:Cyclically.Adjusted.PE.Ratio) %>%
  mutate(indicator=as.factor(indicator), 
         Year=as.POSIXct(cut(as.POSIXct(strptime(Year, "%Y-%m-%d")), "month"))) %>%
  rename(date=Year, `wskaźnik`=indicator) %>%
  filter(!is.na(value))

world_development_indicators <- 
  gather(world_development_indicators,date, value, "1970 [YR1970]":"2020 [YR2020]") %>% 
  mutate(year=as.POSIXct(strptime(sprintf('%s-01-01',substr(date, 1, 4)), "%Y-%m-%d"))) %>% 
  rename(country_name=`Country Name`, `wskaźnik`=`Series Name`) %>%
  mutate(country_name=as.factor(country_name), `wskaźnik`=as.factor(`wskaźnik`)) %>%
  filter(!is.na(value)) %>%
  select(country_name, `wskaźnik`, year, value)

Podsumowanie rozmiaru zbioru, podstawowe statystyki i analiza atrybutów

Bitcoin

Trudność znalezienia nowego bloku

Statystki

date value
Min. :2009-01-02 00:00:00 Min. :0.000e+00
1st Qu.:2012-03-11 18:00:00 1st Qu.:1.689e+06
Median :2015-05-20 12:00:00 Median :4.881e+10
Mean :2015-05-20 12:24:33 Mean :3.664e+12
3rd Qu.:2018-07-28 06:00:00 3rd Qu.:5.364e+12
Max. :2021-10-05 00:00:00 Max. :2.505e+13

Zbiór zawiera 4660 obserwacji reprezentujących trudność znalezienia nowego bloku podczas kopania kryptowaluty z okresu między 2009-01-02 a 2021-10-05. Na poniższym wykresie widać, że wartości zaczęły gwałtownie rosnąć od 2017 roku z wyraźniejszymi spadkami w roku 2019 i 2021.

Szacowana liczba tera haszy na sekundę wykonywanych przez sieć Bitcoina

Statystyki

date value
Min. :2009-01-03 00:00:00 Min. : 0
1st Qu.:2012-03-12 12:00:00 1st Qu.: 12
Median :2015-05-21 00:00:00 Median : 356089
Mean :2015-05-21 00:24:32 Mean : 26458258
3rd Qu.:2018-07-28 12:00:00 3rd Qu.: 38265984
Max. :2021-10-05 00:00:00 Max. :198514006

Zbiór zawiera 4659 obserwacji przedstawiających liczbę tera haszy na sekundę wykonywanych przez sieć Bitcoina w okresie od 2009-01-03 do 2021-10-05. Na poniższym wykresie widać podobny trend jak w przypadku trudności znalezienia nowego bloku. Potwierdza to współczynnik korelacji Pearsona, który wynosi 0.989704.

Średnia wartość w USD

Statystyki

date value
Min. :2009-01-02 00:00:00 Min. : 0.0
1st Qu.:2012-03-12 00:00:00 1st Qu.: 7.2
Median :2015-05-21 00:00:00 Median : 431.9
Mean :2015-05-21 00:24:32 Mean : 5141.2
3rd Qu.:2018-07-29 00:00:00 3rd Qu.: 6499.1
Max. :2021-10-06 00:00:00 Max. :63554.4

Zbiór zaweierający wartości Bitcoina w Dolarach zawiera 4661 obserwacji. W okresie od 2009-01-02 do 2021-10-06 najwyższa warość Bitocina wyniosła 6.355444^{4} dolarów, a średnia 5141.23 dolarów. Duży spadek, który można zaobserwować w połowie 2021 roku spowodowany został zapowiedziami Chińskiego rządu dotyczącymi regulacji odnośnie kryptowalut oraz tweetami Elona Muska na temat zablokowania możliwości płacenia za samochody marki Tesla w tej kryptowalucie czy sprzedaży przez tę firmę posiadanych Bitcoinów o wartości 1,5 mld dolarów (Żródło). Wykres wygląda podobnie do wykresu trudności znaleziania nowego bloku i szacowanej liczby tera haszy na sekunde co potwierdzają wartości współczynnika korelacji Pearsona, które wynoszą odpowiednio 0.82 i 0.82.

Korelację między trudnością znalezienia nowego bloku, szacowaną liczbą tera haszy na sekundę i wartością Bitcoina w dolarach można pokazać na jednym wykresie. W celu czytelenego pokazania wszystkich zmiennych wartości poszczególnych miar zostały znormalizowane.

Wartość w USD wolumenu obrotu

Statystyki

date value
Min. :2009-01-02 00:00:00 Min. : 0
1st Qu.:2012-03-12 00:00:00 1st Qu.: 194787
Median :2015-05-21 00:00:00 Median : 6823690
Mean :2015-05-21 00:24:32 Mean : 146728050
3rd Qu.:2018-07-29 00:00:00 3rd Qu.: 148443298
Max. :2021-10-06 00:00:00 Max. :5352015516

Zbiór zaweierający wartość obrotu Bitcoina wyrażony w dolarach zawiera 4661 obserwacji. Najwyższy obrót o wartości 5.3520155^{9} USD odnotowano dnia 2017-12-22. Korelacja tej miary z wartością Bitcoina w dolarach wynosi 0.53 a z liczbą tera haszy na sekundę 0.39. Obie te korelacje są małe.

Cena złota

waluta minimalna wartość maksymalna wartość średnia wartość odchylenie standardowe dane od dane do
EURO 237.02 1736.15 797.25 413.92 1999-01-04 2021-09-29
GBP 14.48 1566.94 370.78 353.31 1968-01-02 2021-09-29
USD 34.76 2058.15 575.07 490.06 1968-01-02 2021-09-29

Kursy walut

Statystyki

waluta minimalna wartość maksymalna wartość średnia wartość odchylenie standardowe dane od dane do
Dolar australijski 0.90 2.07 1.35 0.26 1995-01-04 2018-05-01
Dolar kanadyjski 0.92 1.61 1.27 0.19 1995-01-03 2018-04-30
Rubel 23.13 83.59 36.91 14.01 2003-05-05 2018-04-30
Yuan 6.09 8.75 7.32 0.86 1995-01-31 2018-05-02

Wyniki S&P Composite

Wskaźnik cen towarów i usług konsumpcyjnych

Statystyki

wskaźnik minimalna wartość maksymalna wartość średnia wartość odchylenie standardowe dane od dane do
CPI 6.28 273.98 62.39 76.26 1871-01-01 2021-10-01

Indeks CPI to średnia ważona towarów i usług kupowanych przez przeciętne gospodarstwo domowe (https://pl.wikipedia.org/wiki/Wska%C5%BAnik_cen_towar%C3%B3w_i_us%C5%82ug_konsumpcyjnych). W latach 1871-01-01 do 2021-10-01 wahał się od 6.2796132 do 273.98325. Na wykresie widać, że po roku 1973 nastąpił gwałtowniejszy wzrost wartości tego indeksu.

Cyclically adjusted price-to-earnings ratio

Statystyki

wskaźnik minimalna wartość maksymalna wartość średnia wartość odchylenie standardowe dane od dane do
Cyclically.Adjusted.PE.Ratio 4.78 44.2 17.21 7.05 1881-01-01 2021-10-01

Powyższy wskaźnik pomaga w ocenie czy ceny akcji na giełdzie są zawyżone. Najwyższa jego wartość wyniosła 44.1979398. Miało to miejsce w 1999 roku. Był to okres “bański internetowej” kiedy to przeceniane były wartości firm prowadzących działalność w internecie (https://pl.wikipedia.org/wiki/Ba%C5%84ka_internetowa). Inna wysoka wartość widoczna na wykresie to okres początku wielkiego kryzysu (https://pl.wikipedia.org/wiki/Czarny_wtorek https://www.parkiet.com/Felietony/309199946-Co-podpowiada-wskaznik-Shiller-PE.html?preview=&remainingPreview=&grantedBy=preview&).

Dywidendy

Statystyki

wskaźnik minimalna wartość maksymalna wartość średnia wartość odchylenie standardowe dane od dane do
Dividend 0.18 59.68 6.73 12.07 1871-01-01 2021-06-01
Real.Dividend 5.45 63.51 17.50 11.11 1871-01-01 2021-06-01

Wartość dywident w okresie czasu, który obejmują dane wykazują trend wzrostowy z jedyn wyraźnym spadkiem w latach 2007 - 2009. Wartości faktycznych dywident przez cały okres była większa niż wartość dywident i wykazywała się większymi wahaniami.

Zysk

Statystyki

wskaźnik minimalna wartość maksymalna wartość średnia wartość odchylenie standardowe dane od dane do
Earnings 0.16 158.74 15.37 28.93 1871-01-01 2021-06-01
Real.Earnings 4.58 159.50 34.91 29.84 1871-01-01 2021-06-01

Podobnie jak w przypadku dywident faktyczny zysk wykazuje się większymi wahaniami i większą wartością niż zysk.

Long Interest Rate

Statystyki

wskaźnik minimalna wartość maksymalna wartość średnia wartość odchylenie standardowe dane od dane do
Long.Interest.Rate 0.62 15.32 4.5 2.31 1871-01-01 2021-10-01

Faktyczna cena

Statystyki

wskaźnik minimalna wartość maksymalna wartość średnia wartość odchylenie standardowe dane od dane do
Real.Price 73.9 4477.2 621.99 733.09 1871-01-01 2021-10-01

S P composite

Statystyki

wskaźnik minimalna wartość maksymalna wartość średnia wartość odchylenie standardowe dane od dane do
S.P.Composite 2.73 4493.28 327.97 685.03 1871-01-01 2021-10-01

Wskażniki rozwoju na świecie

Zbiór opisuje 201 państw oraz cały świat oraz 6 kategori wysokości przychdu przy pomocy 213 wskaźników w latach 1970-2020.

Korelacje

Przy szukaniu korelacji…

Korelacje pomiędzy ceną złota w dolarach i wkażnikami rozwoju

Świat

Total greenhouse gas emissions (kt of CO2 equivalent) do ceny zlota wynosi 0.93

Net official development assistance received (current US$) do ceny zlota wynosi 0.92

Imports of goods and services (current US$) do ceny zlota wynosi 0.92

Gross national expenditure (current US$) do ceny zlota wynosi 0.91

Gross domestic savings (current US$) do ceny zlota wynosi 0.92

GDP (current US$) do ceny zlota wynosi 0.91

Exports of goods and services (current US$) do ceny zlota wynosi 0.92

CO2 emissions from solid fuel consumption (kt) do ceny zlota wynosi 0.92

CO2 emissions (kt) do ceny zlota wynosi 0.91

Goods imports (BoP, current US$) do ceny zlota wynosi 0.9

Individuals using the Internet (% of population) do ceny zlota wynosi 0.9

USA

Net primary income (Net income from abroad) (current US$) do ceny zlota wynosi 0.95

Net primary income (Net income from abroad) (current LCU) do ceny zlota wynosi 0.95

Exports of goods and services (current US$) do ceny zlota wynosi 0.9

Service exports (BoP, current US$) do ceny zlota wynosi 0.9

Net primary income (BoP, current US$) do ceny zlota wynosi 0.94

Net primary income (Net income from abroad) (constant LCU) do ceny zlota wynosi 0.94

Korelacje pomiędzy ceną złota w dolarach i wkażnikami z S P Composite

S.P.Composite do ceny zlota wynosi 0.82

Dividend do ceny zlota wynosi 0.88

Earnings do ceny zlota wynosi 0.86

CPI do ceny zlota wynosi 0.83

Real.Dividend do ceny zlota wynosi 0.83

Real.Earnings do ceny zlota wynosi 0.78

Korelacje pomiędzy ceną złota w dolarach i kursami wybraanych walut

Korelacja kursu Dolar amerykański/Yuan do ceny zlota wynosi -0.95

Korelacja kursu Dolar amerykański/Dolar kanadyjski do ceny zlota wynosi -0.76

Korelacje pomiędzy ceną złota w dolarach i wskaźnikami dla Bitcoina

bitcoin_diff do ceny zlota wynosi 0.39

bitcoin_hrate do ceny zlota wynosi 0.38

bitcoin_mkpru do ceny zlota wynosi 0.34

bitcoin_trvou do ceny zlota wynosi 0.25

Przewidywanie cen złota

Regresor

Wyniki

Analiza atrybutów najlepszego znalezionego modelu